#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QTcpSocket>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

/*! \brief MainWindow - главная форма для эхо-клиента

    Эхо-Клиент посылает сообщение чата на сервер для других клиентов
    Сообщение может приходить не полностью - блоками.
    Сообщение в формате "размер передаваемого  сообщения" (2 байта)
    и "сообщение" для передачи на сервер (все остальные байты)



    !!!! Клиент не отслеживается, что сервер перестал работать
*/
class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
public slots:
    /*! Слот обработки полученных от сервера сообщений
        с проверкой  */
    void slotReadyRead();


private slots:
    /*! Слот кнопки соединения с сервером */
    void on_pushButton_clicked();
    /*! Слот кнопки отправки сообщения в чат на сервер */
    void on_pushButton_2_clicked();
    /*! Слот нажатия клавиши Enter для передачи текстового сообщения в чат */
    void on_lineEdit_returnPressed();



private:
    Ui::MainWindow *ui;

    QTcpSocket *m_socket;           ///< Сокет клиента
    QByteArray m_data;              ///< Данные сообщения для передачи на сервер

    quint16 m_nextMsgSize;        ///< размер передаваемого  сообщения

    /*! Передать сообщение на сервер */
    void sendToServer(QString msg);
};
#endif // MAINWINDOW_H
